# -*- coding: utf-8 -*-
# @Time    : 2019/12/13 16:45
# @Author  : ZSQ
# @Email   : zsq199170918@163.com
# @FileName: img_ocr.py
# @Software: PyCharm
import os
import pytesseract
from PIL import Image
from io import BytesIO
from collections import defaultdict


class ImageOcr(object):
    def __init__(self, path=None, bstr=None):
        self.path = path
        self.bstr = bstr
        self.ocr_config = dict(
            default='--tessdata-dir "D:\\Tesseract-OCR\\tessdata" --psm 6 --oem 3',
            main='--tessdata-dir "D:\\Tesseract-OCR\\tessdata"',
            full='--tessdata-dir "D:\\Tesseract-OCR\\tessdata" --psm 6 --oem 3 -c tessedit_char_whitelist=0123456789',
        )

    @staticmethod
    def get_pixel_dict(_image):
        pixel_dict = defaultdict(int)
        # 像素及该像素出现次数的字典
        rows, cols = _image.size
        for i in range(rows):
            for j in range(cols):
                pixel = _image.getpixel((i, j))
                pixel_dict[pixel] += 1
        return pixel_dict

    @staticmethod
    def get_max_threshold(_dict):
        count_max = max(_dict.values())  # 获取像素出现出多的次数
        pixel_dict_reverse = {v: k for k, v in _dict.items()}
        threshold = pixel_dict_reverse[count_max]  # 获取出现次数最多的像素点
        return threshold

    def get_image(self):
        _path = self.path
        _bstr = self.bstr
        if _path and os.path.isfile(_path):
            return Image.open(_path)
        elif _bstr and isinstance(_bstr, bytes):
            return Image.open(BytesIO(_bstr))
        else:
            raise

    def image_to_str(self, _img, _lang='eng', _opt='default'):
        return pytesseract.image_to_string(_img, lang=_lang, config=self.ocr_config[_opt])

    @staticmethod
    def get_bin_table(threshold):
        # 获取灰度转二值的映射table
        table = []
        for i in range(256):
            rate = 0.5  # 在threshold的适当范围内进行处理，rate值由算法计算获得
            # rate = 0.063
            # rate = 0.1
            if threshold * (1 - rate) <= i <= threshold * (1 + rate):
                table.append(1)
            else:
                table.append(0)
        return table

    @staticmethod
    def get_binary_image(_image, threshold=100):  # threshold值由算法计算获得
        return _image.point(lambda x: 0 if x < threshold else x >= threshold, '1')

    @staticmethod
    def deal_noise(image):  # 去噪，不同图片，去噪算法不一样，复杂图片需要多个算法联合去噪
        rows, cols = image.size  # 图片的宽度和高度
        change_pos = []  # 记录噪声点位置
        # 遍历图片中的每个点，除掉边缘
        for i in range(1, rows - 1):
            for j in range(1, cols - 1):
                # 记录该点附近的黑色像素的数量
                pixel_set = []
                # 取该点的邻域
                for m in range(i - 1, i + 2):
                    for n in range(j - 1, j + 2):
                        if image.getpixel((m, n)) != 1:  # 1为白色,0位黑色
                            pixel_set.append(image.getpixel((m, n)))
                # 如果该点邻域的黑色数量小于等于1，则判断为噪声
                if len(pixel_set) <= 1:
                    change_pos.append((i, j))
        # 对相应位置进行像素修改，将噪声处的像素置为1（白色）
        for pos in change_pos:
            image.putpixel(pos, 1)
        return image

    def main(self, _lang='eng', _opt='default'):  # chi_sim 为简体中文
        # 图片获取
        image = self.get_image()
        # 图片转化为灰度图
        imgry = image.convert('L')
        # 图片预处理
        imgry = self.get_binary_image(imgry)
        # 图片背景获取(出现次数最多的像素)
        max_pixel = self.get_max_threshold(self.get_pixel_dict(imgry))
        # 图片二值化处理
        table = self.get_bin_table(threshold=max_pixel)
        imgry = imgry.point(table, '1')
        # 图片去噪声（孤立点）
        imgry = self.deal_noise(imgry)
        # 图片识别
        code = self.image_to_str(imgry, _lang=_lang, _opt=_opt)
        return code


if __name__ == '__main__':
    bio = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x02\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.\' ",#\x1c\x1c(7),01444\x1f\'9=82<.342\xff\xdb\x00C\x01\t\t\t\x0c\x0b\x0c\x18\r\r\x182!\x1c!22222222222222222222222222222222222222222222222222\xff\xc0\x00\x11\x08\x00(\x04\x80\x03\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\x07"q\x142\x81\x91\xa1\x08#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17\x18\x19\x1a%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04\x04\x00\x01\x02w\x00\x01\x02\x03\x11\x04\x05!1\x06\x12AQ\x07aq\x13"2\x81\x08\x14B\x91\xa1\xb1\xc1\t#3R\xf0\x15br\xd1\n\x16$4\xe1%\xf1\x17\x18\x19\x1a&\'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf7\xfa(\xa2\x80\n(\xa2\x80\n(\xa2\x80 \xbb\x93\xcb\xb7l\x1eO\x02\xa9ZD%\x9b\x91\xf2\xaf&\xb9\xbdw\xc7V\x90\xcf\xa4\xc5\x05\xa6\xab\xe5\xdc]\x98\xa6\xf3t[\xc5!\x042\xb8\xd9\x98\xc6[r/\x03<n8\xc0$m\xe8\xda\xc5\x95\xc5\x85\xd5\xf1i\xad\xad\xa0\xc9\x96K\xdby-\xb6\x05\x19,D\xaa\xa7h\x1f\xc5\xd3\x83\xcf\x06\x805\xee%\xf2\xa2\xe3\xef\x1e\x16\xa9\xc7t\xe8q\xbfp\xf4a\x8f\xd6\xbc\xd7Q\xf8\xbb\x02]\xdc\xb8\xb7\x8f\xc8\x8bQ\x16\xd1\xc7-\xc5\xbc3\x18r\xb1\xb9x\xe4\x9dd\x8d\xc4\x9b\xdb\xe6@6(\xdd\xb7%\xd7\xa7\xf0\xf7\x88\xa0\xf1\x1c\x13Okn\xe9\x0cL\x13\xcc7\x16\xf3+62@0\xc8\xe0\x101\x90q\xf7\x87Z\x00\xec"\x97\xcdRv\x91\xf5\xaa\x17q\x08\xa6\xe0|\xad\xc8\xa9\xec\xa4\xcb\x15?\xc43\xf8\xf7\xa4\xd4q\xfb\xbf^h\x02{I<\xcbq\x9e\xa3\x83K+0t\x19;[\x8f\x97\xaej-?\xfdK\x7f\xbdS\xcc3\x13\x11\xd4r?\n\x00\x8b\x84`\x00\x00\x93\xce>f\xa9c\x1f.\xdd\xb8\x1e\xe7\x9a`E2\x8d\xa3\nS$\x0e>\x9f\xd6\x9c\x89\xb6RUv\xae1\xf5\xa0\x08\xb7mU\xeb\xba#\x83\xf4\xff\x00\xf5sN]\xab\xbbf\x1c\xe4\xed\xc0\xce3S*\x85\x18Q\x81N\xa0\x06*\x9f3y\xc7\xdd\x03\x8a}\x14P\x01E\x14P\x01Eg\xd9k\x9a^\xa5\xa8\xde\xd8X\xdf\xc1suc\xb4]$/\xbb\xc9,X\x05b8\r\x94l\xafQ\x8e@\xc8\xce\x85\x00\x14QE\x00\x14QE\x00\x14QE\x00\x14QE\x00\x14QE\x00\x14QU\xef\xaf\xec\xf4\xcb9//\xee\xe0\xb4\xb5\x8f\x1b\xe6\x9eA\x1a.H\x03,x\x19$\x0f\xc6\x80,QT\xe0\xd5lnth\xb5\x84\xb9\x8ci\xf2[\x8b\xa5\xb8\x93\xe4Q\x11]\xdb\xce\xecm\x1by\xe7\x18\xefU\xe3\xf1\x1e\x90\xfa\\\xda\x94\x97\xd1\xda\xda@\xfb\'{\xd0m\x8c,q\x81"\xc8\x14\xa1;\x94\x80\xc0d2\x91\xc1\x19\x00\xd4\xa2\xab\xd8_[\xeazu\xb5\xfd\x9c\x9ee\xad\xd4I4/\xb4\x8d\xc8\xc0\x158<\x8c\x82:\xd5\x8a\x00(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\xb9{\xef\x14\xb5\xb6\xb1\xaaY,s\x98m\xe2\x8e(g\x83L\xb8\xbb\xd9tT\xbb\xac\x8b\x10?(G\xb7a\xf7s\xbd\x80bA\xda\x01\xd4Q\\\xfe\x8d\xe2\xfd7W\xd3\x92\xef3\xc1\x18\xb4\x17R\xcf5\xa5\xc4V\xca\x98\x04\xb2\xcd,h\xac\xbc\xe4\x1e29\xc0\x19\xc57\xf1F\xbbqoiqa\xe0\xbdgc\xba<\x91\xdd5\xaclba\xce\x01\xb8\xca8\xc8l2\xf3\xb4\xa9\xdb\x9d\xca\x01\xd6Q\\\xfd\xbf\x89\xe6\x93X\xb3\xd3n\xbc;\xaa\xd9Iw\xbc\xa3\xcc\xf6\xce\xaa\x11rY\x84s3\x05\xfb\xab\xbb\x18\xdc\xe8\t\x05\x85t\x14\x00QHN\x01\'\xb54\xb8\x1b\x0fUc\x8c\xd0\x03\xe9\t\x00g#\x1e\xb4\xc7f\x07\x05\x82\x8e\xd8\xe4\x9a\x8a5;\x99B\x8c\xa9\xc8/\xd8}(\x02\xc0 \x8c\x83\x91KL\x8d\x8b)\r\xf7\x81\xc1\xa7\xd0\x01Ep\xf3\xf8\xea\xf6\xdbL\xd4\xf5W\xd1\xb6\xe9\x89w\x1cz}\xf5\xcd\xccp[\xcd\x13\xc9\x14>c8g`\xa5\xdaG\x0f\xb3i\x8c)\xef\xce\x85\xaf\x8a/#\xd7\x1fN\xd6m\xb4\xabH\xd2\xd2{\x99\'\xb6\xd4\xcc\xc2\x1f+\xc9,\xb2\x06\x896|\xb3\xabd\x9e\x9c\xf4 \xd0\x07QEq+\xe3\xe9\xad\xb5[\xab}CA\xd4\xa2\xb6.\x92Y\xcc\x12%/n\xdb\x13qF\x97\xccg\xf3X\x8f-Sx\x0f\x10(\x19\x8064O\x17\xde]F\xd6\xba\xce\x89u\xa6\xdeY\xdb\xab\xeaW\x12Kn\xb6\xf0\x1f,\xb1q\xfb\xe2\xe6"C\x00\xd8#*A9V\xc0\x07ZX(\xc9 \x0fzh\x91K\x05\xe7\x9e\x87\x15\xc2\xeb>8\x9fH\xd4c\xb1\xb8\xb3\xd3\xac\xe4w\x9c\x0b\x9dSR6\xb0\xba\xc7\xe4\x91\xe5\xb9\x8d\xb7\x12\'\x19\x18\x01Y$\x19m\xb92\xe8\x1e5:\xdf\x88\xbf\xb2\xff\x00\xe2I;}\x91\xee\xbc\xdd+V\xfb`_-\xe3\\0\xf2\xd7n\xef7\x83\x93\xf7M\x00w\x14W\x15\xaa\xf8\xe6]\x17\xfb2\xebS\xb1\x8e\xc6\xc2d\xb9[\xc9n\xa4(\xb0\xc9\x0c\x88\x06\xc6#2\x07Q3F\xa1\x0b\xc9\x848Q\xb8\xae\x8e\x87\xaf\xea\xba\x9e\xb3scw\xa5ZC\x15\xb20\x9a{k\xb9$\xf2\xe5\x0c\x00\x8d\x84\x90\xc7\xcb.\\\x11\x9f\x97kt\x91\x0b\x00t\x94V^\xbf\xa9M\xa5i\xd1\\@\xb1\xb3\xbd\xed\xa5\xb9\x0e\t\x1be\xb8\x8e&<\x11\xce\xd7${\xe3\xafJ\xd4\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\x8a\xa7\xa9^\xcfcn\xb2\xdb\xe9\x97z\x83\x97\nb\xb5h\x95\x80\xc1\xf9\x8f\x98\xe81\xc6:\xe7\x91\xc7\\rv\xde=\xbf}\xb7/\xe1]U\xecn\xe5H\xac\xbc\xb7\xb5\x13\x19\x0eU\xe2x\xcc\xf9\xdc\xa5X\x93\xc1P\x1c2\xaf\x96X\x80w\x14V>\xa1\xaeK\xa7\xf8J\xff\x00\\\x9bM\x9e\x19--&\xb96s\xc8\x81\xcf\x96\xacv\x96B\xea3\xb7\xa8\'\x19\xf5\xe2\xb2\xf5m{\xc5Z6\x8d}\xaa\\h\x1a3Aeo%\xc4\x8b\x1e\xb1)b\xa8\xa5\x88\x19\xb6\x038\x1e\xa2\x80:\xca+?Z\xd5\x93D\xd3\r\xec\x96\xd3\xdc\xfe\xf6(R\x186\xefw\x92E\x8d@\xdc\xca\xbfy\xc7R+\x1e\x1f\x10\xf8\x80^\\\x89\xbc\x19\xaa\x9bS\xb4\xdb\xb2Mf\x1cq\x86V\x06\xe3\x07\x04d0#;\xb1\xb4m\xdc\xc0\x1dE#0U,z\x01\x9a\xa1\xa2\xea\xc9\xad\xe9\x82\xf6;i\xed\xbf{,/\x0c\xfbw\xa3\xc7#F\xc0\xedf_\xbc\x87\xa15r\x7f\xf5\x12\x7f\xbah\x030\x034\xde\xeckP\x05\x86/EQY\xf6\x9f\xf1\xf2\x99\xab\xb7\x08\xcf\x1e\x01\xe0rG\xad\x00T\xfbL\x81\xf3\xbf\xaf8# U\xa8n\x0c\xa7\x05y\xf5\x1c\x8a\xceo\xbcy\xeb\xcdMm&\xc9\x14\xfb\xe3\xf04\x01-\xecC\x02P9\xe8h\xb1\x7f\xbc\x84\xfb\x8a\x9a\xef\x1ff|\xfbU[/\xf5\xe7\xfd\xda\x00\xbb)e\x8c\xb2\xf6\xeb\xf4\xa8\xdb\x00o\xda3\x8e\x0b\x9c\x93\xf4\x159\x19\x185\\ \xd8\xa3\xf8\xc3\xed\xc8\xea\x7f\xc8\xa0\t\x10\xfc\xd9\xc1%\xba\x96\xe3\xf4\xa6\xb8\x01\x9e3\xd1\xf9\x1f_\xf3\x83Tl\xf5\x8d/R\xd4\xee\xec4\xfb\xd8.n\xac\n\xfd\xa8D\xfb\xfc\xa2\xc5\xd4+\x11\xd1\xb2\x8d\x95\xea1\xc8\x19\x19\x8f\xfe\x12m jF\xd3\xcd\x9f\xcc2\xf9\x1e\x7f\xd9%\xfb?\x99\x9d\xbb<\xfd\xbe^\xed\xdf&7g\x7f\xcb\xf7\xb8\xa0\r\x10\xc8\xc43\x10I\x18e\xc6NEI\x86}\xa4\x8ca\xb3\xf8U?\xed\xbd;\xfbc\xfb+\xed\x1f\xe9}6\xecm\x9b\xb6\xee\xf2\xf7\xe3o\x99\xb3\xe7\xd9\x9d\xdb~lm\xe6\xb4(\x00\xa2\xb3\xec\xb5\xcd/R\xd4ol,o\xe0\xb9\xba\xb1\xda.\x92\x17\xdd\xe4\x96,\x02\xb1\x1c\x06\xca6W\xa8\xc7 dd\xfe\xdb\xd3\xbf\xb6?\xb2\xbe\xd1\xfe\x97\xd3n\xc6\xd9\xbbn\xff\x00/~6\xf9\x9b>}\x99\xdd\xb7\xe6\xc6\xdeh\x03B\x8a(\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\x8a+.\xcf\xc4zE\xf5\xbd\xd5\xc47\xd1\x88-S\xcc\x96IA\x8dDX$J\x0b\x00\x1a"\x15\x88\x90e\x1bi\xc184\x01\xa9Ee\xe9\xbe \xd3\xf5[\x86\xb7\x83\xedqN\x10\xb8\x8e\xee\xcakfu\x04\x02TJ\x8aX\x02T\x12\xb9\xc6\xe5\xce23\xa9@\x05\x15\x97\xa5x\x87L\xd6\xae. \xb0\x9eI^\x04I\x18\xb4\x12"\xb29`\x8e\x8c\xca\x04\x88\xdb\x1b\x0c\xa4\x83\x8e\rX\x83U\xb1\xba\xd5/4\xc8.c\x92\xf2\xc9#{\x98\x97\x93\x10\x93v\xcd\xdd\x81!I\xc7\\`\xf4# \x17(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\x8a\x00(\xa2\xb1\xef\xbcQ\xa4\xe9\xd7\x92[\\M8h\xb1\xe7\xcb\x1d\xa4\xb2C\x06@?\xbd\x95T\xa4xR\x18\xefa\x85!\x8e\x01\x06\x806(\xac\xbdG\xc4:f\x95{ogw<\x8b<\xef\x1a*\xc7\x04\x92\x042>\xc8\xf7\x95R#\x0c\xdf*\x97 \x12\x0e:\x1cjP\x01ES\xd4u[\x1d%-\xde\xfe\xe68\x05\xc5\xc4v\xb0\xee\xeb$\xae\xdbU\x14u$\x9f\xc8\x02N\x00&\xb3\xee|[\xa5Z\xdf\xdc\xd92\xeaSOj\xe1&\xfb.\x97s:\xa3\x14W\x00\xb4q\xb2\xe7k\xa9\xc6{\x8a\x00\xdc\xa2\x8a(\x00\xa2\x8aM\xc3v\xdc\xf3\x8c\xe2\x80\x16\x934\xc0\xe5\x94\x90\x06A\xc1\x04\xd42\x1c\x80\xf9/\xb4\xf3\xb7\x81\x8e\xfc\xd0\x05\x9d\xcb\xbbnF})j\x1c\xb4{xP\xa4\xe0\x81SP\x01EG<\xf0\xda\xdb\xcbqq,p\xc1\x12\x17\x92I\x18*\xa2\x81\x92I<\x00\x079\xac\xbb_\x14i7^~f\x9e\xd7\xc8\x89\xa7\x7f\xb7\xdaKi\xfb\xb5\xfb\xce<\xe5\\\xaa\xe4n#!w\x0c\xe3# \x1b\x14V-\xbf\x8a\xb4\x8b\x85\x9c\xb4\xd3\xda\xf9\x114\xee/\xed%\xb4\xfd\xda\xfd\xe7\x1er\xae\xe5\\\x8d\xc4d.\xe1\x9cde-\xfcW\xa4\xdc4\xa1\xa5\xb8\xb5\x11F\xd39\xbf\xb5\x96\xd3\xf7k\xf7\x9cy\xca\xbb\x95r7\x11\x90\xbb\x86q\x91\x90\r\xbaa\x91A\xc6r}\x075\x91e\xe2\x0b\x1dR\xec\xdb\xdb\xfd\xad%\x11\x97\x10\xdd\xd9\xcdj\xce\x01\x19*%U.\x06@$g\x1b\x978\xc8\xcd\x8b\xfb\xe84\xed2\xf6\xfe\xe2M\x96v\xd1<\xb2\xb0Rv"\xae\xe2p9\xe0g\x81@\x1a\n\xc1\xd40\xe8i\xd5\xcf\xc3\xe2\xcd+\xca\xbe\x9d\xd7Q\x82\xde\xd6\xdd\xee\xe5\x92\xebL\xb9\x81V5\x19b\x0b\xc62{\xe0d\x9ep8\xab\x9an\xbfg\xaa\xdc4\x16\xf0\xeaH\xea\x85\xc9\xba\xd3n-\xd7\x19\x03\x86\x91\x14\x13\xcfL\xe7\xaf\xa1\xa0\rJ(\xa2\x80\n(\xa2\x80\n(\xa2\x80\n\xaf}o-\xdd\x9c\x90C{=\x94\x8d\x8cO\x00B\xe9\x82\x0f\x01\xd5\x97\x9e\x9c\x83\xd7\xd7\x9a\xb1U\xef\xac,\xf5;9,\xef\xed \xbb\xb5\x93\x1b\xe1\x9e1"6\x08#*x8 \x1f\xc2\x80<\xb3^\xb1\xf1\x16\xab\xa8h\x13\xe9>)\xbe\x96\xcd\xaf\xddm&\xbb\x86\xdb\xfd!\xc5\xb4\xec^2\x90\x8d\xb1\x95V@\xec\x1fw\x98\\)US\'K\xe1\xd8\xbc\xf6i\xae\xf5]B\xfd\x11\x82Mc\xa8\xc3l\r\xbc\xca\xca\xe0\xb0\x8e5\xf9\xd4\x85`rT\x82\x19r\n\xb5uW\xbal7\xd7Zu\xc4\xad {\x0b\x83q\x10R0X\xc5$Xn:m\x91\x8f\x18\xe4\x0f\xa1\xadu\xa3\xda\x9d@\xeaq\xda\xc3\xf6\xc3\x17\x92f\xf2\xc7\x99\xe5\xe7;wu\xdb\x9eq\xd34\x01\xe4\xd7z0\xbf:\x8cK\xae\xea"#\xab\xdcN\x16\xd3I\xd5\xe7\x8dYn\xdeM\xa1\xa3\x95b$0\xc1(\x83\x078;\x86\xfa\xec|\x0f\x1c\xd2Z\xdf \xbe\x92\xf5b\x9c#,\xf6\xd7p\xc9\x0c\x9b\x15\x88o\xb4\xca\xef\x82\xac\x84\x01\x81\xc9<\xe6\xa5\x83\xc2V\x16\xed6\xdb\xad`y\xb3\xcb;,z\xb5\xcc*\x1aGg $n\xaa\x06X\xf4\x1f\\\x9c\x93\xa9\xa2\xd8\xdb\xe8)z\xb6\x8ds\'\xda\xee>\xd1!\xba\xb9y\xd87\x96\x91\xe0;\x92\xc4b1\xd4\x9e\xfd\xb0\x00\x06\xc4V\xc6&\x12H\xe0m\xec:U[\x99|\xe9I\x1d\x07\x02\x92I\xe4\x9b\x86<z\n\xb3khA\x12H1\x8e\x82\x80,[G\xe5@\xaaz\xf55)\x01\x94\x83\xd0\xd2\xd1@\x08\x00\x1d\x05-\x14P\x01E\x14P\x01E\x14P\x01E\x14P\x07?g\xff\x00%\x0fY\xff\x00\xb0U\x87\xfe\x8d\xbb\xae\x82\xb2\xe1\xf0\xd6\x83m\xaa\x1dR\r\x13M\x8bP.\xcen\xd2\xd5\x16R\xcd\x9d\xc7x\x19\xc9\xc9\xc9\xcf95\xa9@\x05\x14Q@\x05\x14Q@\x05\x14Q@\x05\x14Q@\x05\x14Q@\x05\x14U{\xeb\x0b=N\xceK;\xfbH.\xedd\xc6\xf8g\x8cH\x8d\x82\x08\xca\x9e\x0e\x08\x07\xf0\xa0\x0e\x1e\xdf\xe5\xf89\xe1iO\x11\xc3\x16\x8f<\xaezG\x1aKn\xee\xec{*\xaa\xb3\x12x\x00\x12x\x15\xd0X\xfe\xf3\xc7\xda\xdc\xa9\xf3F\x9a}\x8c\x0c\xe3\x90\xb2\x07\xb9r\x84\xff\x00x,\x91\xb1\x1dp\xeaz\x11Z\x9an\x93\xa6\xe8\xd6\xedo\xa5\xe9\xf6\x9603\x97h\xedaX\x94\xb6\x00\xc9\n\x00\xce\x00\x19\xf6\x15\x1f\xf6\x16\x8f\xfd\x8f\xfd\x91\xfd\x95c\xfd\x99\xff\x00>_gO\'\xefn\xfb\x98\xdb\xf7\xb9\xe9\xd7\x9a\x00\xcf\xf0\'\xfc\x93\xcf\r\x7f\xd8*\xd7\xff\x00E-t\x15OM\xd2t\xdd\x1a\xdd\xad\xf4\xbd>\xd2\xc6\x06r\xed\x1d\xac+\x12\x96\xc0\x19!@\x19\xc0\x03>\xc2\xaeP\x01E\x14P\x01E\x14P\x01E\x14P\x01E\x15\x14\x97\x11\xc5\xc37>\x82\x80\x16q3[\xca\xb6\xf2G\x1c\xe5\x08\x8d\xe4B\xea\xad\x8e\tPA#=\xb23\xea+\x87\xf0\xee\x8f\xa9i\xd7\x9e%\xb4\xd0\xf5\x1bH\x02\xeb\x06I\xe4\xbf\xb3k\x86\x9aG\xb5\xb6v\x7f\x92H\xc2\x92\xcc\xec@\x18\xf9\xb0\x02\x81\x8a\xec\r\xfa\xf6C\xf9\xd6\x13\xf8oH\xb8\xd4\xef\xaf\xe5\xb8\xd5\xe3\x9a\xf6U\x96A\x06\xa7q\x02\x02#H\xc6\x16\'Q\xd21\xc9\x04\xfb\xe3\x00\x00T\xf0\n\xebV\xde\x05\xd1n..-/-\x06\x8f\x03Aikfb\x9c\x9f)J\xa9\x91\xe6(\xc7\x1ctPI\x07*8\xac=q\xbcGy\xadi\x10\x88|G\x147\x9a\x83\x8f\xb2\xde\xea\x16\xb6p\x11\xe4L\xe1\x04\xb6{\xa7\x18\xda\x08\xce\xe0v\xf2s\x83]\x9e\x93\xe1M\'Gkg\xd3\xdfQX\xed\xd3d1>\xa9s,J\xbbv\x81\xe5\xbc\x850\x07A\x8e8\xc7AZ\x1a\xa6\x97k\xabZ\x88.\x95\xfeG\x0f\x1c\x91J\xf1I\x1b`\x8d\xc8\xe8C)\xc1# \x8c\x86 \xf0H\xa0\x0ew\xc3B\xe3B\xb9]\x1a]>\xd2\xd5.\x96{\xd8\x955{\x9b\xd7v\xdf\x18\x90\xe6X\x86\xd0ZPO\xcd\xc9bpr\xc4uk&N\x19J\xb7\xa1\x1f\xd6\xb14\xdf\x0c\xe9\x9a~\xa1\xfd\xa1\x03_\xc9q\x1cm\x04os\x7f=\xce\xc4b\xa5\x82\x89\x1d\x80\xc9E\xe4z\n\xd6F)\xbb8\x18?x\xf2ph\x01\xdb\x8a\xca\xfbG^\xde\xe3\xaf\xe9LUfB\x8ax\x1d>\x9dA\xa9\\\x0c\xa1^\xa5\xc1\xff\x00\x1f\xd2\x94\xa9\x13\x07\x1d\x08\xc1\xfe\x94\x00\xd6m\xd1$\xc3\xf8y?N\xf4\xaf\xf2\xc8\x8f\xd8\xfc\xa7\xfaS\x916\xee\xee\t\xce)\xad!\xe8\xa0\xe4\xf0\t\xe0f\x80\x1c\xaaC\xb3\x1c|\xdd\x85A\xa8\xc2.\xb4\xfb\x8bR\xb0\xb7\x9f\x13\xc5\x8b\x88|\xd8\xceT\x8f\x9d27/\xaa\xe4dq\x91ObT\xa8\x91\xfa\xff\x00w\x8aY3\xf2\xc8>\xea\xf3\x83@\x1e=5\x98\xd25?\x11^\xde\x9d\x18\xdd\x7fn\xd8\xb3\x9b=-\xa3\xb9\x94\tt\xf9\x1c\xa0\x12;\xb2e\xc1(\x01%\xdbvr\xc1k_\xc1\xdat\xd6\x1e&\xb2\xb3\xb8\xd3$\xb0\x99lo>Gr\xc0\xae\xdd;b\xa9\xe8\xc2$\xdb\x06\xe0N\xe3\x01c\xcb\x1a\xec\xee\xbc3\xa5\xcfqw*\xc1\xe5\\^][^\\M\x10\xfd\xe4\xaf\x03#F\x0b6p\xa3\xcbQ\x8e\x9c\xb60I5#\xe8\x916\xaf6\xa0..\xa2\xba\x96\xd9\xe0\x89\xc4\xbb\xfe\xcf\xbbn\xf6E`@\'\xcb\x88\xe0\x82\xb9\x8f \x02\xcf\xb8\x03\xcat\x8bH\xa5\xf1\x95\x8bF\x96\xf6\xd7R\xeb\xda\xa2}\xaa\x1d\x11\xd2u\xca\xdes\xf6\xa6\xccR\xe3\x8c&\xd3\xd0\x03\x9d\x86\xba?\x07M\xa9iW\xb0\xaf\xf6\x85\xf6\xa3e{\x0e\xad{\x1d\xbb$\x03\xce)x\x9eT\x91\xb0T\x1f\xbcYKd\xb6\xc3\xbc\x11\x85\xc6:i\xbc\x1fc$ZtPK}k\x06\x9e\x82\x18!\x82\xe5\x94*\xaa\xb4jA9!\xbc\xb7\x917\x02\x18\x893\x9d\xca\x8c\x97\xad<;eg\xaa-\xf4J\xe8#\xb76\xd0[\x87>T\x08vn\x08\xbd\x14\x11\x14_(\xe0l\xc8\x00\xb3\x96\x00\xf3\xabk\x98\xc5\xe6\x907\xeb\x9aDQ\xc7\x7fme\x0e\x9fl\xb7r\xd9\xc1\x04\xb6\xf0\x18\\\x08\xa6\xdf\x96\x87~\xfc\xfc\xa4\xed\xdc\xc0\x83[^\x1f\xba\x17Z\xd4\xd7\xe6\xf3[\xd6\xf5;\x1f\xb7X\xf9%-\xc4p\xaaM\x83\xbaE\x8e$\x129\x82,!b@\x91N6\xe5\xc7Es\xe0\xed6{\x9bYc\x9e\xfa\xd1 \xfbNc\xb5\xb9h\xbc\xdf\xb4H\xb2\xc9\x97\x1f\xbc\x1f\xbc@\xdf#/q\xca\x92)c\xf0\x9c\x11k\x16\xd7\xa9\xa8\xdf\x0b{k\xb9ob\xb0\xfd\xd7\x92\xb3J\xb2\x07l\xec\xf3\x0eL\xd26\x0b\xe0\x16\xe0\x00\x00\x00\x1er\xfa\xa6\xb4\x9a\xb5\x9d\xfd\xbbk6GT\xd4\xae\x92\xe2\xde\xc9\xec\x8661\xb6\nD\xd22\x97\x06\xde\xcdwchi\\\x07&TA\xa5\xf0\xba\xc6\xca\xe7X\xbb\xd6\xe0\xd0\xa3\xb0\x96Kx\xb3-\x94QEj<\xebK)Z \xa0\xf9\x99\x0c\x0b\x0e6\x80\xed\xc9&\xbb\x8b\x9f\ti\x17\x16\xb7V\xfeL\x91\xa5\xdaK\x1c\xc5d$\x98\xe5\x94\xcb2\r\xd9\xd8$f`\xc5pH\xdb\x826!Q<#\xa3\xc3\x7fw{o\x1d\xdd\xac\xb7\x8e\xf2N\xb6\xb7\xd3\xc3\x1b\xbb\xa6\xc6s\x1a8M\xe4\x7f\x163\x90\x1b9\xe6\x800\xfcg\xe1\xab\x03\xa7\xa5\xd1\xb8\xd5|\xc9u[\x1d\xc0j\xd7A\x06\xfb\xc8\x81\xda\x9ef\xd5\xeaq\x806\xf0F\x08\x18\xea4\xcd\x1a\xd7H\xf3~\xcd-\xf4\x9en7}\xae\xfe{\x9cc8\xc7\x9a\xed\xb7\xaflg\x8c\xf4\x15\x977\x81\xb4[\x94\t<\xba\xcc\xa8\x1d\\+\xebw\xac\x03+\x06S\xcc\xbdC\x00A\xec@5r\xc7\xc3V\x1a}\xe4wP\xdcj\xaf"g\x02}Z\xead9\x04r\x8f!S\xd7\xb8\xe3\xafZ\x00\xd8\xa2\x8a(\x00\xa2\x8a(\x00\xa2\x8a(\x03\x97\xf8\x83\x0f\xda<&`\xfb4\x17^f\xa1`\x9eE\xc1\xc4r\xe6\xee\x11\xb5\xce\x1b\xe5=\x0f\x07\x83\xd0\xf4\xaf;\xb3\x8fF\xba\xd5,\xf4h|=\xe0\xa9\xb5\x0f\xed;\xabg\\A\xe6\xc9\xe4\xf9\xe4\x89-\xc4\x19\x8a&\xf2\xb0\xac\x1d\x99s\x19c\'\xcc\x1f\xd85=6\x1dV\xd5-\xe7i\x15\x12\xe2\x0b\x80P\x80wE*\xca\xa3\x90x\xdc\x80\x1fl\xf4\xebR_Z\xfd\xb6\xceKqq=\xbb6\n\xcd\x03\xedt`A\x04v8 pAS\xd0\x82\t\x04\x03\x87\xb1\xb9\x7f\xf8U\xde\x10\xd2c\xd3\xa0\xbf\xfe\xd9\xd3\xe0\xb0xg\xbakt\xd8l\xdd\xdb.\xa8\xcc>X\xc8\xe0w\xea+>[\x1b}CC\xb1\x8c\xe9\xb7\xd3\xddjZ\x85\xd6\x95-\x9c\xfe)\xbf\xf2\x07\x95\xf6\x80\xe4\xbf%\x94\x88\x1b\x82\x83;\xb9\xae\xd2\xef\xc2ze\xde\x9b\xa4\xe9\xc0\xdd\xdb\xdaiN\xadl\x96\xb7RD\xc0,O\x12\xa9\x91H|ms\xd1\x818\x19$d\x1a\xff\x00\xf0\x84\xe9\x9f\xd9v:q\xb8\xd4\xbc\x8b+\xd9\xaf\xa3u\xbd\x91%/\'\x9b\xb84\xaaC\x91\xfb\xe6\xe7vN\x06I\xe7 \x18\xfa\xf5\xe4\xde(\xf0\x1cp\xcdii\r\xe5\xce\xb1\x15\x9f\xd9_7Q;C|\x16O\x94\x842&\xd8]\xc8\xc2\xfc\x81\xb3\x80\t\xae<h\x16i\xe2\rA\xe5\xd3<?\xb2\xdd\xfe\xc8\xbfd\xf0E\xc5\xdd\xbd\xc0P\xac\\\x18\xdd\x95]\x1c\xcb\x19\x00\xe7*wg\n\x17\xd4,\xbc+c\xa7\xd8Eko5\xde\xfbw\xb9\x92\xde\xe2Y|\xd9!y\xdd\x99\x9co\xc8g\x1b\xd8\x06p\xc7\x04\x82N\xe6\xdds\xfb\x1e\xde=\x1f\xfb6\xd1\xe7\xb3\x8cr\x92\xc1)\xf3\x15\xf7n\xdeX\xe7{\x16\xf9\x9b~\xed\xe4\x9d\xc1\x83\x10@+\xf8V;x\xfc/\xa7\x1b3bme\x88M\t\xb0\xb36\xb0\xb29\xde\xa5b,J\xe40\'\'\xaeO\x19\xc5k\x91\x90A\xefPXX\xdb\xe9\x9au\xb5\x85\x9c~]\xad\xacI\x0c)\xb8\x9d\xa8\xa0\x05\x19<\x9c\x00:\xd5\x8a\x00\xc9`\xd0\xcd\x8e\xeax\xad8\xa4YSp\xfcG\xa5Eso\xe7\x0c\x8e\x1c~\xb5D\x19 ~2\xad@\x12I\x0b\tJ\x04c\x8e\x98\xe9\x8a\x91,\xdd\x87\xccB\x0fAH\xb7\xce\x07*\xa6\xa3\x92\xeeY\x063\xb4{P\x04\x97\x93\x06\xc4jr\x07SRX\xc7\x85.{\xf0*\xbc\x16\xcd)\x04\x8c\'\xaf\xadi\x00\x15@\x03\x00t\xa0\x05\xa4\n\x07AKE\x00s\xf6\x7f\xf2P\xf5\x9f\xfb\x05X\x7f\xe8\xdb\xba\xa7$67SCgjc\x83E\xb4\xd4\xfe\xd1u4\x92|\x97\x17fb\xeb\n\x12rH\xb8ef \xe02\x88\x80l\xba\xa6\xc4>\x1a\xd0m\xb5C\xaaA\xa2i\xb1j\x05\xd9\xcd\xdaZ\xa2\xcaY\xb3\xb8\xef\x039999\xe7&\xa3\xff\x00\x84O\xc3\x7f\xda?\xda?\xf0\x8f\xe9_n\xf3|\xff\x00\xb4\xfd\x8a?3\xcc\xce\xed\xfb\xb1\x9d\xd9\xe7=s@\x1c\xbf\xfc\xca\xdfa\xff\x00\x97\xbf\xf8J\xff\x00\xd4\x7f\xcbO\xf9\t\xfd\xa3\xee\xf5\xff\x00S\xfb\xdf\xf7>o\xbb\xcdw\x16\xb7\xf6w\xde\x7f\xd8\xee\xe0\xb8\xf2%h&\xf2d\x0f\xe5\xc8\xbfy\x1b\x1d\x18dd\x1eE\x1f`\xb3\xfe\xd1\xfe\xd1\xfb$\x1fn\xf2\xbc\x8f\xb4\xf9c\xcc\xf2\xf3\xbbf\xee\xbbs\xce:f\x8b[\x0b;\x1f?\xecv\x90[\xf9\xf2\xb4\xf3y1\x84\xf3$o\xbc\xed\x8e\xacp2O&\x801\xec\xff\x00\xe4\xa1\xeb?\xf6\n\xb0\xff\x00\xd1\xb7u\xcf\xff\x00\xcc\xad\xf6\x1f\xf9{\xff\x00\x84\xaf\xfdG\xfc\xb4\xff\x00\x90\x9f\xda>\xef_\xf5?\xbd\xff\x00s\xe6\xfb\xbc\xd7Y\x0f\x86\xb4\x1bmP\xea\x90h\x9alZ\x81vsv\x96\xa8\xb2\x96l\xee;\xc0\xceNNNy\xc9\xab\x9f`\xb3\xfe\xd1\xfe\xd1\xfb$\x1fn\xf2\xbc\x8f\xb4\xf9c\xcc\xf2\xf3\xbbf\xee\xbbs\xce:f\x80,QE\x14\x00QE\x14\x00QE\x14\x00QE\x14\x01OV\xd3a\xd6tk\xed.\xe1\xa4X/m\xe4\xb7\x91\xa3 0WR\xa4\x8c\x823\x83\xe8k\x8b\x92\xf9\xe6\xf1\x0cw\xfa\xf4\x9aU\xce\x91o\xe1\xfb\xc9\'{5i\xe3x\x1d\xe0"W\x078YV96\xc67q\x1b\xe1\xe4\xe7o\xa0U=7I\xd3tkv\xb7\xd2\xf4\xfbK\x18\x19\xcb\xb4v\xb0\xacJ[\x00d\x85\x00g\x00\x0c\xfb\n\x00\xc3WM/\xc6W\x12^^}\xaa3\xa7\xcbr\xf7W%W\xfb6!"\xfe\xef \x05X\xdf,A 1\xfb;ng\n<\xbb\x1e,\xff\x00\x89\xa7\xc3\xcds\xfb;\xfd3\xedZU\xc7\xd9\xfe\xcf\xfb\xcf;tM\xb7f3\xbb9\x18\xc7\\\xd6\x85\xae\x85\xa3\xd8\xe9\xd3\xe9\xd6zU\x8d\xbd\x8c\xfb\xbc\xebhm\xd1#\x93p\xda\xdb\x94\x0c\x1c\x80\x01\xcfQW \x82\x1b[x\xad\xed\xe2\x8e\x18"@\x91\xc7\x1a\x85TP0\x00\x03\x80\x00\xe3\x14\x01\xc9\xae\xa9\xac\xc1\xf6\x8bm:\xf6\rz\xea\xe3J\x97Q\xb5\x90"$q\xcb\xf2\x88\x90m y2\x96;76\xecD\xf9w\xea\x94\xfc\x1c$\xb5\xf1~\xa1`t\x8dJ\xcd"\xd1\xec\x81\x92\xfaH\x1d\xe4a5\xd1.\xe6)\x1bs\xc8\xcc\xccOr\xaeN27v\x96\xb6\x16v>\x7f\xd8\xed \xb7\xf3\xe5i\xe6\xf2c\t\xe6H\xdfy\xdb\x1dX\xe0d\x9eMW\xb5\xd0\xb4{\x1dF}F\xcfJ\xb1\xb7\xbe\x9fw\x9ds\r\xba$\x92n;\x9bs\x01\x93\x92\x019\xeah\x03B\x8a(\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\x8a(\xa0\x02\xb9=j\x1b\x1b\xa1\xab\xe9\x90\x18\xe1\xb7\xb9u\x9f^\xbc\x92LE\x1cB4W\x8c\x92xw\x85\x15p\xa5v!\xf3\t\x04\xa0~\xb2\xb1\xaf\xfc+\xe1\xadF\xeeK\xddG@\xd2n\xaed\xc6\xf9\xee,\xe3wl\x00\x06X\x8c\x9c\x00\x07\xe1@\x1c\xc5\xc5\xc6\xa3\xa4j\xbe0\xd4\xe1\xbe\xd9\xf6[\xb8\xaea\xd3<\xa5\xcd\xf6\xebX\x11T\xb1\xcb\x1d\xef\x19\x8e2\x98\xc4\x8a\xd9\xf31\xb0w\x10\xdf\xd9\xdc^\\\xd9\xc3w\x04\x97V\xbb~\xd1\nH\x0b\xc5\xb8ew(\xe5r9\x19\xebU\xae\x06\x9f5\xe5\xbd\xdc\xb6p\xcduk\xbb\xec\xf3\xbc`\xbc[\x86\x1bk\x1eW#\x83\x8e\xb4\xc8>\xc3oysw\x15\x8c1\\\xddm\xfbD\xd1\xa2\x87\x97h\xc2\xeele\xb08\x19\xe9@\x1c_\x8c\x1fR\x83T\xba\xbb\xb8\xd0\xaf\xae\xa3]CL\x86\xc6\xe2\x19m\xfc\xb1\x10\xb9\x82F\x00<\xa1\xd6G\x94\x94<\x05"8s\x80\xa5\xabB\xf9\xae4{\x9f\x13\xebz~\xb1\xe6\xf9\x17i+\xe9b\xd8\x014\xff\x00f\x81D\x05\xceY\x99\xd4E\xe5\x98\xf6\xe1\xe4\xc1\x12}\xca\xe8\xef\xf4\x9d\x0f_\xf2\x86\xa9\xa5\xd8\xdf\x98s\xe5\x8b\xbbt\x97fq\x9d\xbb\x81\xc6p:z\n\xb3&\x93\xa6\xcd\xaaC\xaaK\xa7\xda>\xa1\nl\x8a\xed\xa1S*/<+\xe3 |\xcd\xc0=\xcf\xad\x00[\xdc\x03\x01\x9eOJ\x8f\xcd;\xdb\xe4%A\xc6G\xad$\x87k\x83\xbb\x04\x90\xa3\xd8w\xa68\x08\x0670S\xc8n\x05\x00I!\x0f\x17\x1d\xcf\x07\xd0\xf6\xa8\xd9\xf7m~\x9e\xe3\xd0\xf0\x7f#R\xa9\x0cJ\x9ceO@1\x8aDP\xc9"\xff\x00\tb\x05\x00"nYp\xdf\xc6?2?\xfa\xd4\xb1\x807\xc4z\x03\xc7\xd0\xd0\x11\x8ch\x18\xe1\xd4\x83\x9a{\x10\xbc\xe0\x92}\x05\x00D\x15\x9e\x1f/<\x83\xb4\x93S\xd4@\xc8\xed\x90B\xafNy9\xa4\x89\xc3\x0c\x82Y\x8f\xafJ\x00\xcd\xf1%\xc5\x84~\x15\xd6$\xd4\xad\xe5\x9e\xc1,\xa77QG\xc3<A\x1bx\x07#\x92\x01\x1dG\xd4W\'|\xc6\xc8\xdd\xff\x00\xc2b\xc3R\xc6\x81v\xdf\xe8\x7f.-\xd7\xcb\xfbLm\x8d\xbb\xa4l\xc3\xf3\x8d\xa0\xed\xe1!\xc1\xdf\xde\xa8\xc2:6\tS\x9c\x9e\x98?\xe4\xd5\r3A\xd2t\x7f4\xe9:M\x95\x97\x9d\x8f3\xec\xd6\xe9\x00|g\x19\xda\x06q\x93\xd7\xd4\xd0\x071%\x99]Q\xad|aq\x05\xcf\xdat[\x84\xf3\x91\xfc\xa8\xe2\xb7\x061r\xb27\xcb\x92wDL\x83h!N\x12,\x1d\xeb\xaa\xbd\x95\xdd\xae\xaf\xac\xeb\x90H,\x86\x8fp\x90X\x13\xb2\xe1\xed@\rq!\x04\xab\x02\xf8\x84m<\xa0T\xc9FvQ\xd1\xd9\xf8sB\xb2\xb5\x96\x0b\x1d\x0fM\xb6\x82\xf1v\\\xc5\r\xa4h\xb2\xae\x18a\xc0\x1f0\xe4\x8e}O\xad\x1a_\x86t]\x1a\x7f?L\xd0\xf4\xdb\x1b\x8d\x866\x9a\xda\xd9"f\\\x83\x82T\x02G\x00\xe3\xda\x800\xedd\xb8\xd3\xf5\xf8d\xf1%\xe4\x12\xdeE\xa5\xcd,\x17(Dq\xc1\x12<F\xe0HHP\xccI\x84\xf9\x98U!N#\x8b\x07~\xa7\x88\xc5\x96\xa5\xe0mfF\xd4#\x87N\xbb\xd3\xa6f\xbbE\xf3Ubh\x8f\xef\x00_\xbc6\xf3\x81\xd6\xad\xd9xcA\xd3m\xaem\xec\xb4]:\xde\x1b\xa4\xf2\xeec\x86\xd5\x11f\\\x11\x87\x00a\x86\t\x18>\xa6\xb4\xad\xed\xe1\xb4\xb6\x8a\xde\xda\x18\xe1\x82$\t\x1cQ\xa8UE\x03\x00\x008\x00\x0e\xd4\x01\xc3\xebb\xe2+-kE\xd5\xb5\x8f:\xd2\xe7D\xba\xb9\xba\xbd\x16\xc3\xfd\x03#a\x024\xe4\xc6\xc0\xbb"\xb1/\xfb\x99\x06\xe7\xfe\x1d\xcd>\xe3Q\xb3\xf1\x08\xd2n\xef\xbf\xb4\xbc\xebF\xbb\x92Q\x12\xc7\xf6V\x0e\xaa\x10\x05\xe9\x1b\xe5\xca\x06%\x87\x92\xf9y?\x87SM\xd2t\xdd\x1a\xdd\xad\xf4\xbd>\xd2\xc6\x06r\xed\x1d\xac+\x12\x96\xc0\x19!@\x19\xc0\x03>\xc2\x8d7I\xd3tkv\xb7\xd2\xf4\xfbK\x18\x19\xcb\xb4v\xb0\xacJ[\x00d\x85\x00g\x00\x0c\xfb\n\x00\xb9E\x14P\x05o\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80#{\x8b)>\xfb\x02}v\x9a\x8f6\x19\xfb\xe7\xf5\xa2\x8a\x00\x91.,c\xfb\xac\x01\xf5\xdajO\xb7\xdb\x7f\xcf_\xfct\xd1E\x00\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa3\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4Q@\x07\xdb\xed\xbf\xe7\xaf\xfe:h\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x14P\x01\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a>\xdfm\xff\x00=\x7f\xf1\xd3E\x14\x00}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8f\xb7\xdb\x7f\xcf_\xfct\xd1E\x00\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa3\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4Q@\x07\xdb\xed\xbf\xe7\xaf\xfe:h\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x14P\x01\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a>\xdfm\xff\x00=\x7f\xf1\xd3E\x14\x00}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8f\xb7\xdb\x7f\xcf_\xfct\xd1E\x00\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa3\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4Q@\x07\xdb\xed\xbf\xe7\xaf\xfe:h\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x14P\x01\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a>\xdfm\xff\x00=\x7f\xf1\xd3E\x14\x00}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8f\xb7\xdb\x7f\xcf_\xfct\xd1E\x00\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa3\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4Q@\x07\xdb\xed\xbf\xe7\xaf\xfe:h\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x14P\x01\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a>\xdfm\xff\x00=\x7f\xf1\xd3E\x14\x00}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8f\xb7\xdb\x7f\xcf_\xfct\xd1E\x00\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa3\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4Q@\x15n\xb5kt\xf9\x12_\x98\xf58<UX\xa7\x8abq\'\x1d\xc9\x06\x8a(\x02\xc8\xfb&9\xb89\xf6S\xfe\x15\x1c\x86\x002\x93n\xf6*E\x14P\x04Qjq@\xfcI\xc7pA\xad%\xd4-\x1d\x03\tx#\xfb\xa6\x8a(\x01\x8dy\x00s\xb6N\x19q\xf7O\x07\xf2\xa5\x17\x96\xa8\xf9\xf3\x80\x01q\x8c\x1e\x94Q@\n\xb7\xf6x;%Q\x8f\xf6O\x1f\xa5G\xfd\xa9\x03*\x11 \xc1\xe1\xbeS\x8c\xfeTQ@\x08\xb7\xd0"s9\xfd\xd9\xc60q\x8f\xcb\xd2\x9f%\xf5\xb3:\xabK\xf2\x9fE=\x7f*(\xa0\x07\xad\xe5\xa2\xf4~}v\x9aq\xbe\xb5 \x83\'\x07\xfd\x93E\x14\x01\x12\xdd\xc1\x84&l2\xe4gi\xe4S\xc5\xdd\xa892\x92}H4Q@\x0e\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4\xd6\xbb\xb3q\x86pG\xba\x9a(\xa0\x08\x8b\xd8\x1f\xe3#\xf3\xa7,\xb6(r\x1b\'\xdc\x1a(\xa0\t~\xddm\xff\x00=?CG\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80\x0f\xb7\xdb\x7f\xcf_\xfct\xd1\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00k\xea6\xa8\xa5\x8c\xbc\x0f\xf6Mf\xcb\xa9\xc5;\xf3\'\x1d\x80SE\x14\x014f\x022\xf3m\xf6\nM<\xfd\x93\x1c\\\x1c\xfb\xa9\xff\x00\n(\xa0\n\xd2O\x14\'\x998\xec@5j\xd7V\xb7\x7f\x91\xe5\xf9\x87C\x83\xcd\x14P\x05\x87\xbc\xb5u#\xcc\xe4\x8cgi\xa8\xfe\xdb\x03\xa9f\x90\x02W\x18*\x7f\x1a(\xa0\x07}\xbe\xc9B\x86\x98\x12\x07\x04\xa9\xa1\xb5+d\x91W\xcc\x18#\xa0S\x9c\xd1E\x00E\xf6\xf8N\x19\xa6\xc1V\xda\xd8S\xd0\xfe\x1fJ\x95/\xed\xc6\xf4\xf3\xb2GBA\xefE\x14\x00\xd8\xee\xed\x1dw\xb4\x84\x93\xd4\x10q\x9f\xa6*o\xb7Z\x81\xfe\xb3\xff\x00\x1d4Q@\x0ck\xcb\x7f1XI\xc60x=)\x16\xea\xdc(SpH\x1d\x00\x04QE\x00<^\xda\xa8\xc0\x93\x03\xfd\xd3K\xf6\xfbo\xf9\xeb\xff\x00\x8e\x9a(\xa0\x03\xed\xf6\xdf\xf3\xd7\xff\x00\x1d4}\xbe\xdb\xfez\xff\x00\xe3\xa6\x8a(\x00\xfb}\xb7\xfc\xf5\xff\x00\xc7M\x1fo\xb6\xff\x00\x9e\xbf\xf8\xe9\xa2\x8a\x00>\xdfm\xff\x00=\x7f\xf1\xd3G\xdb\xed\xbf\xe7\xaf\xfe:h\xa2\x80?\xff\xd9'
    imo = ImageOcr()
    imo.bstr = bio
    img = imo.get_image()
    img.show()
    # code = imo.main(_lang='chi_sim')
    # print(code)
